package fr.enssat.tpcloud.dao;

import java.util.Collection;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import fr.enssat.tpcloud.model.Notif;
import fr.enssat.tpcloud.model.User;

public class NotifDao extends HibernateDaoSupport {
	
    /**
     * Recupere toutes les notifications.
     * 
     * @return collection of user
     */
    @SuppressWarnings("unchecked")
    public Collection<Notif> getAllNotif() {
        return getHibernateTemplate().loadAll(Notif.class);
    }
    
    /**
     * Enregistre une notification dans la base de donnees.
     * 
     * @param notif la notification a sauvegarder
     */
    public void save(Notif notif) {
           getHibernateTemplate().save(notif);
    }
    
    /**
     * Supprime une notif dans la base de donnees.
     * 
     * @param notif notification a supprimer
     */
    public void delete(Notif notif) {
        getHibernateTemplate().delete(notif);
    }
    
    /**
     * Trouve une notif a partir de son identifiant.
     * 
     * @param id l'identifiant de la notif
     * @return la notif d'identifiant id
     */
    @SuppressWarnings("unchecked")
    public Notif findById(int id) {
        
    	// Critere pour trouver le post
        DetachedCriteria criteria = DetachedCriteria.forClass(Notif.class)
            .add(Restrictions.eq("id", id));
        
        List<Notif> allResult = getHibernateTemplate().findByCriteria(criteria);
        
        // Retourne null s'il y a pas 1 seule et unique notification 
        Notif result = null;
        if(allResult.size() == 1) {
            result = allResult.get(0);
        }

        return result;
    }
}
